package com.qf.oop.book;

import java.util.Scanner;

/**
 * 菜单类，
 * 负责给用户展示菜单，并接收用户的输入
 * 输入1 注册，2 登录，3 退出
 */
public class Menu {

    // 多态的应用场景一 （最重要的场景，以后Controller和Service两个类中的代码，会大量应用这种写法）
    private Banner banner;

    // 使用 父类型声明实例属性
    private BookService bookService;

    public BookService getBookService() {
        return bookService;
    }

    public void setBookService(BookService bookService) {
        this.bookService = bookService;
    }

    public Banner getBanner() {
        return banner;
    }

    public void setBanner(Banner banner) {
        this.banner = banner;
    }

    public Menu() {

    }

    public void show() {
        System.out.println("欢迎使用用户管理系统");
        // 调用一个能够打印 banner 图形的对象，进行banner的打印
        banner.printBanner();

        Scanner sc = new Scanner(System.in);

        while (true) {
            System.out.println("1. 添加图书\t 2. 删除图书\t 3. 修改图书 \t 4. 查找图书");
            int item = sc.nextInt();
            switch (item) {
                case 1:
                    Book book = new Book();

                    boolean flag = bookService.addBook(book);
                    if (flag == true) System.out.println("添加成功");
                    else System.out.println("添加失败");
                    break;
                case 2:
                    System.out.println("请输入需要删除的图书id");
                    int id = sc.nextInt();
                    if (bookService.deleteBook(id)) {
                        System.out.println("删除成功");
                    } else {
                        System.out.println("删除失败");
                    }
                    break;
                case 3:
                    System.out.println("请输入需要修改的图书id");
                    id = sc.nextInt();
                    bookService.updateBook(id);
                    break;
                case 4:
                    indexBy(sc);
                    break;
                default:
                    System.out.println("输入有误!");
                    break;
            }
        }


    }

    public void indexBy(Scanner sc) {

        System.out.println("需要根据什么查找? 书名 / 作者 / id");
        String index = sc.next();
        Book book = new Book();
        Book[] books = new Book[10];

        if (index.equals("书名")) {
            System.out.println("请输入书名:");
            books = bookService.findBookByName(sc.next());
            isIndexNull(books);
        } else if (index.equals("作者")) {
            System.out.println("请输入作者:");
            books = bookService.findBookByName(sc.next());
            isIndexNull(books); // 判断books是否为null
        } else if (index.equals("id")) {
            System.out.println("请输入id:");
            book = bookService.findBook(sc.nextInt());
            isIndexNull(book); // 判断book是否为null
        } else {
            System.out.println("输入有误!");
        }


    }

    public boolean isIndexNull(Book book) {
        if (book == null) {
            System.out.println("搜索有误!");
            return true;
        }

        return false;
    }

    public boolean isIndexNull(Book[] books) {
        if (books == null) {
            System.out.println("搜索有误!");
            return true;
        }

        return false;
    }


}
